package main

import (
	"clipPaste/internal/clipboard"
	"clipPaste/internal/config"
	"clipPaste/internal/hotkey"
	"clipPaste/internal/storage"
	"clipPaste/internal/ui"
	"fmt"
	"io"
	"log"
	"os"

	"fyne.io/fyne/v2/app"
)

func main() {
	// 添加日志文件
	logFile, err := os.OpenFile("debug.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		fmt.Println("Failed to open log file:", err)
		return
	}
	defer logFile.Close()
	// 同时输出到控制台和文件
	log.SetOutput(io.MultiWriter(os.Stdout, logFile))
	// 设置日志格式
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
	log.Println("Application starting...")

	fyneApp := app.New()

	// 初始化配置管理器
	configMgr, err := config.NewManager()
	if err != nil {
		log.Fatal("Failed to initialize config manager:", err)
	}

	// 初始化存储管理器
	store, err := storage.NewManager()
	if err != nil {
		log.Fatal("Failed to initialize storage manager:", err)
	}
	defer store.Close()

	// 初始化剪贴板管理器
	clipManager := clipboard.NewManager(fyneApp, store)

	// 创建历史窗口
	historyWindow := ui.NewHistoryWindow(fyneApp, store)

	// 创建系统托盘
	trayManager := ui.NewTrayManager(fyneApp, historyWindow, configMgr)
	trayManager.Initialize()

	// 设置默认热键
	hotkeyManager := hotkey.NewManager(historyWindow)
	hotkeyManager.StartListening()

	// 开始监控剪贴板
	clipManager.StartMonitoring()

	// 显示欢迎通知
	showWelcomeNotification()

	fyneApp.Run()
}

func showWelcomeNotification() {
	log.Println("ClipPaste 已启动!")
	log.Println("使用方法:")
	log.Println("1. 使用 Command+Shift+V (MacOS) 或 Ctrl+Shift+V (Windows/Linux) 打开历史记录")
	log.Println("2. 点击系统托盘图标访问更多功能")
	log.Println("3. 所有复制的内容都会自动保存")
}
